#pragma once
#include "BaseTask.h"
#include <string>
#include <cstdint>

// 前向声明
class TcpConnection;

/**
 * @brief 获取好友列表业务任务
 * 
 * 职责：
 * 1. 在业务线程池中执行获取好友列表逻辑
 * 2. 查询数据库获取用户的所有好友
 * 3. 生成好友列表响应并通过线程安全的方式发送回客户端
 */
class GetFriendListTask : public BaseTask
{
public:
    /**
     * @param conn TcpConnection 指针，用于发送响应
     * @param jsonBody 获取好友列表请求的 JSON 消息体
     */
    GetFriendListTask(TcpConnection* conn, const std::string& jsonBody);
    
    ~GetFriendListTask() override;
    
    /**
     * @brief 执行获取好友列表业务逻辑（在业务线程池中调用）
     * @param arg 预留参数，当前未使用
     */
    void work(void* arg) override;

private:
    TcpConnection* m_conn;      // TcpConnection 指针
    std::string m_jsonBody;     // 请求 JSON 数据
};

